package com.shisfish.library.Inter;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.shisfish.core.Inter.IModelInter;
import com.shisfish.library.Model.Book;

public interface IBookInter extends IModelInter<Book>{
	
	public int countByCategory(@Param("category") String category);
	
	public List<Book> selectByCategory(@Param("category") String category, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public int countByTitle(@Param("title") String title);
	
	public List<Book> selectByTitle(@Param("title") String title, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public int countByAuthor(@Param("author") String author);
	
	public List<Book> selectByAuthor(@Param("author") String author, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public int countByISBN(@Param("ISBN") String ISBN);
	
	public List<Book> selectByISBN(@Param("ISBN") String ISBN);
	
	public List<Book> selectByISBN1(@Param("ISBN") String ISBN, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public List<Book> selectByPage(@Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public int countFuzzy(@Param("singleString") List<String> singleString);
	
	public List<Book> selectFuzzy(@Param("singleString") List<String> singleString, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public List<Map<String, Object>> selectOtherBooks(@Param("number") int number);
	
	public List<Map<String, Object>> selectFuzzyLess(@Param("singleString") List<String> singleString, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public List<Book> selectAllPage(@Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public int countJournal(@Param("singleString") List<String> singleString);
	
	public List<Book> selectJournal(@Param("singleString") List<String> singleString, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public Book selectJournalDetail(@Param("ISBN") String ISBN);
	
	public int countISBNJ(@Param("isbn") String isbn);
	
	public List<Book> selectISBNJ(@Param("isbn") String isbn);
	
	public int countByISSN(@Param("ISSN") String ISSN);
	
	public List<Book> selectByISSN(@Param("ISSN") String ISSN, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public int countByCategoryJ(@Param("category") String category);
	
	public List<Book> selectByCategoryJ(@Param("category") String category, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public int countByTitleJ(@Param("title") String title);
	
	public List<Book> selectByTitleJ(@Param("title") String title, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public int countByAuthorJ(@Param("author") String author);
	
	public List<Book> selectByAuthorJ(@Param("author") String author, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);

	public int countByISBNJ(@Param("ISBN") String ISBN);
	
	public List<Book> selectByISBN1J(@Param("ISBN") String ISBN, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public List<Book> selectByISBNJ(@Param("ISBN") String ISBN);
	
	public int countFuzzyJ(@Param("singleString") List<String> singleString);
	
	public List<Book> selectFuzzyJ(@Param("singleString") List<String> singleString, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public List<Map<String, Object>> selectFuzzyLessJ(@Param("singleString") List<String> singleString, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public int countAllJ();
	
	public List<Book> selectAllPageJ(@Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public int countByCategoryT(@Param("category") String category);
	
	public int countByCategoryTJ(@Param("category") String category);

	public int countNewAdd(@Param("type") int type);

	public List<Book> selectNewAddPage(@Param("type") int type, @Param("currentPage") int beginIndex, @Param("pageSize") int pageSize);
	
	public int countNewAddJ(@Param("type") int type);

	public List<Book> selectNewAddPageJ(@Param("type") int type, @Param("currentPage") int beginIndex, @Param("pageSize") int pageSize);
	
	public int countByPublisher(@Param("publisher") String publisher);
	
	public List<Book> selectByPublisher(@Param("publisher") String publisher, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);
	
	public int countByPublisherJ(@Param("publisher") String publisher);
	
	public List<Book> selectByPublisherJ(@Param("publisher") String publisher, @Param("currentPage") int currentPage, @Param("pageSize") int pageSize);

	public int countByCategoryTJYear(String category, String pubdate);

	public int countByISBNJYear(@Param("isbn") String isbn, @Param("pubdate") String pubdate);
	
}
